<?php

include_once 'Attributes.php';


class TypeMemberAttributes extends Attributes
{
    public function get_private()
    {
        return $this->private;
    }

    public function set_private($private)
    {
        if(is_bool($private))
        {
            $this->private = $private;
            if($private)
            {
                $this->protected = false;
                $this->public = false;
            }
        }
        else
        {
            throw new InvalidArgumentException(
                'The value is not boolean.');
        }
    }

    public function get_protected()
    {
        return $this->protected;
    }

    public function set_protected($protected)
    {
        if(is_bool($protected))
        {
            $this->protected = $protected;
            if($protected)
            {
                $this->private = false;
                $this->public = false;
            }
        }
        else
        {
            throw new InvalidArgumentException(
                'The value is not boolean.');
        }
    }

    public function get_public()
    {
        return $this->public;
    }

    public function set_public($public)
    {
        if(is_bool($public))
        {
            $this->public = $public;
            if($public)
            {
                $this->private = false;
                $this->protected = false;
            }
        }
        else
        {
            throw new InvalidArgumentException(
                'The value is not boolean.');
        }
    }

    public function get_static()
    {
        return $this->static;
    }

    public function set_static($static)
    {
        if(is_bool($static))
        {
            $this->static = $static;
        }
        else
        {
            throw new InvalidArgumentException(
                'The value is not boolean.');
        }
    }
    
    protected $private = false;
    protected $protected = false;
    protected $public = true;
    protected $static = false;
}

?>
